package MODULES.MOD_XML.COMMONS;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.List;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;

public class Controls {
    /**
     * Nghiệp vụ thực thi và trả về 1 đối tượng DefaultTableModel --> bindding lên JTable (ResultSet --> JTable)
     * @param objRS
     * @return
     * @throws SQLException
     */
    public DefaultTableModel getModels(ResultSet objRS) throws Exception {
        DefaultTableModel objDTM = null;
        try {
            // 1. Binding dữ liệu từ ResultSet vào đối tượng ResultSetMetaData
            ResultSetMetaData objRSData = objRS.getMetaData();
            int col = objRSData.getColumnCount();

            // 2. Khởi tạo đối tượng DefaultTableModel chứa thông tin Hàng và
            // Cột
            objDTM = new DefaultTableModel();
            Vector<String> col_name = new Vector<String>();
            Vector<String> row = new Vector<String>();

            // 3. Duyệt và khởi tạo thông tin column
            for (int i = 1; i <= col; i++) {
                col_name.addElement(objRSData.getColumnName(i)); // RollNo
            }
            objDTM.setColumnIdentifiers(col_name);

            // 4. Duyệt và khởi tạo thông tin Row
            while (objRS.next()) {
                row = new Vector<String>();
                for (int j = 1; j <= col; j++) {
                    row.addElement(objRS.getString(j));
                }
                objDTM.addRow(row);
            }
        } catch (Exception ex) {
            throw ex;
        }
        return objDTM;
    }

    /***
     * Nghiệp vụ thực thi và trả về 1 đối tượng DefaultTableModel --> bindding lên JTable (List --> JTable)
     * @param lisField
     * @param lisRows
     * @return
     * @throws Exception
     */
    public DefaultTableModel getModels(List<Object> lisField, List<Vector<String>> lisRows) throws Exception {
        // 1. Khởi tạo đối tượng DefaultTableModel chứa thông tin Hàng và Cột
        DefaultTableModel objDTM = new DefaultTableModel();
        try {
            Vector<String> col_name = new Vector<String>();
            Vector<String> row = null;

            // 2. Khởi tạo thông tin column
            for (Object strValue : lisField) {
                col_name.addElement("" + strValue);
            }
            objDTM.setColumnIdentifiers(col_name);

            // 3. Duyệt và khởi tạo thông tin Row
            for (int i = 0; i < lisRows.size(); i++) {
                row = new Vector<String>();
                row = lisRows.get(i);
                objDTM.addRow(row);
            }
        } catch (Exception ex) {
            throw ex;
        }
        return objDTM;
    }
}
